export TOP_DIR=$(shell pwd)

#设置编译器
export CC=$(CROSS_COMPILE)gcc
export CXX=$(CROSS_COMPILE)g++
export AR=$(CROSS_COMPILE)ar
export RANLIB=$(CROSS_COMPILE)ranlib

#输出文件夹
export OUTPUT=$(TOP_DIR)/output

# 定义检查和创建文件夹的函数接口
define check_and_create_folder
	@if [ ! -d $(1) ]; then \
		mkdir -p $(1); \
	fi
endef

#debug文件夹里的makefile文件需要最后执行，所以这里需要执行的子目录要排除debug文件夹，这里使用awk排除了debug文件夹，读取剩下的文件夹
#SUBDIRS=$(shell ls -l | grep ^d | awk '{if($$9 != "output") print $$9}')
SUBDIRS=common bsp applib unitest

export CFLAGS = -Wall -fPIC -O2
export CXXFLAGS = -Wall -fPIC -O2 -std=c++11
export LDFLAGS = -shared

#注意这里的顺序，需要先执行SUBDIRS最后才能是DEBUG
all: $(OUTPUT) $(SUBDIRS) 

$(OUTPUT):
	$(call check_and_create_folder, $(OUTPUT))

#递归执行子目录下的makefile文件，这是递归执行的关键
$(SUBDIRS):ECHO
	make -C $@

ECHO:
	@echo $(SUBDIRS)

clean:
	@$(foreach N,$(SUBDIRS),make -C $(N) clean;)
	@rm -rf $(OUTPUT)

unitest:
	make -C unitest
